perm filename MONOP.F4[DKH,LCS] blob
sn#140128 filedate 1975-01-10 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 CC ATTEMPT AT CONSTRUCTING A MONOPOLY GAME
C00058 ENDMK
Cā;
CC ATTEMPT AT CONSTRUCTING A MONOPOLY GAME
CC DAVID HOFFMAN / COLGATE UNIVERSITY / JULY 1973
CC INITIALIZATION
IMPLICIT INTEGER(A-Q,S-Y)
DIMENSION ZSQRE(3,0/39),JAIL(5),LOC(5),MONEY(5),AUTPIL(5),
1ASSETS(5),OTHPRP(2,2,4),NUMOTH(2,5),RNAME(0/5),NOJAIL(5),
2MVALUE(5),TT(2)
COMMON CARDS(2,16)/L/TNUM(3)/M/MOWN(5,8),CMONOP(6),CMPUTR
1/K/PROP(11,22)
DATA ZSQRE/'GO',' ',' ','MEDIT','ERRAN','. AVE','COMMU',
1'NITY ','CHEST','BALTI','C AVE',' ','INCOM','E TAX',' ',
2'READI','NG RR',' ','ORIEN','TAL A','VE','CHANC','E',' ',
3'VERMO','NT AV','E','CONNE','CTICU','T AVE','JAIL',' ',' ',
4'ST CH','ARLES',' PL','ELECT','RIC C','O','STATE','S AVE',' ',
5'VIRGI','NIA A','VE','PENN.',' RR',' ','ST JA','MES P','L',
6'COMMU','NITY ','CHEST','TENNE','SSEE ','AVE','NEW Y','ORK A',
7'VE','FREE ','PARKI','NG','KENTU','CKY A','VE','CHANC','E',' ',
8'INDIA','NA AV','E','ILLIN','OIS A','VE','B & O',' RR',' ',
9'ATLAN','TIC A','VE','VENTN','OR AV','E','WATER',' WORK','S',
1'MARVI','N GAR','DENS','GO TO',' JAIL',' ','PACIF','IC AV','E',
2'N CAR','OLINA',' AVE','COMMU','NITY ','CHEST','PENN.',' AVE',
3' ','SHORT',' LINE',' RR','CHANC','E',' ','PARK ','PLACE',' ',
4'LUXUR','Y TAX',' $75','BOARD','WALK',' '/
DATA PROP/1,60,0,2,10,30,90,160,250,0,0,3,60,0,4,20,60,180,320,
1450,0,0,6,100,0,6,30,90,270,400,550,0,0,8,100,0,6,30,90,270,400,
1550,0,0,9,120,0,8,40,100,300,450,600,0,0,11,140,0,10,50,150,450,
1625,750,0,0,13,140,0,10,50,150,450,625,750,0,0,14,160,0,12,60,
1180,500,700,900,0,0,16,180,0,14,70,200,550,750,950,0,0,18,180,
10,14,70,200,550,750,950,0,0,19,200,0,16,80,220,600,800,1000,0,0,
121,220,0,18,90,250,700,875,1050,0,0,23,220,0,18,90,250,700,875,
11050,0,0,24,240,0,20,100,300,750,925,1100,0,0,26,260,0,22,110,
1330,800,975,1150,0,0,27,260,0,22,110,330,800,975,1150,0,0,29,
1280,0,24,120,360,850,1025,1200,0,0,31,300,0,26,130,390,900,1100,
11275,0,0,32,300,0,26,130,390,900,1100,1275,0,0,34,320,0,28,150,
1450,1000,1200,1400,0,0,37,350,0,35,175,500,1100,1300,1500,0,0,
139,400,0,50,200,600,1400,1700,2000,0,0/
DATA DSK/1/,MFLAG/0/,CMPUTR/0/,CMONOP/6*0/,FRPARK/0/,
1RNAME/' ',5*0/,LOC/5*0/,MVALUE/5*0/,AUTPIL/5*0/,JAIL/5*0/,
2MOWN/5*1,30*0,5*1/,NOJAIL/5*0/,MONEY/5*1500/,ASSETS/5*0/,
3NUMOTH/10*0/,OTHPRP/16*0/,TIMER/1/
CALL TIME(N,X)
X=IABS(N)-IABS(X)
ZANS=SETRAN(X)
TYPE 5
5 FORMAT(' WELCOME TO COLGATE''S AUTOMATED MONOPOLY (V 17)'/)
CALL CHKOLD(K)
IF(K.EQ.0)GO TO 10
TYPE 7
7 FORMAT(' I SEE YOU''VE SAVED A GAME FROM LAST TIME.'/
1' DO YOU WANT TO PLAY (1) THE OLD ONE OR (2) A NEW ONE: '$)
ACCEPT 166,ANS
IF(ANS.NE.1)GO TO 10
CALL IFILE(DSK,'MONOP')
READ(DSK)MFLAG,CMPUTR,FRPARK,NOPLYR,CMONOP,RFREE,DOUBLE,PTIME,
1CANTPL,JAIL,LOC,NOJAIL,MONEY,ASSETS,MVALUE,OTHPRP,NUMOTH,RNAME
2,TIMER,CARDS,MOWN,PLYR,(PROP(3,N),PROP(10,N),PROP(11,N),N=1,22)
CALL DELFIL
GO TO 108
10 DO 30 X=1,2
DO 30 K=1,16
20 M=RAN(X)*16+1
IF(K.EQ.1)GO TO 30
DO 25 J=1,K-1
IF(M.EQ.CARDS(X,J))GO TO 20
25 CONTINUE
30 CARDS(X,K)=M
60 TYPE 61
61 FORMAT(' HOW MANY HUMAN PLAYERS (1 TO 4)? ',$)
ACCEPT 166,NOPLYR
IF(NOPLYR.LT.1.OR.NOPLYR.GT.4)GO TO 60
DO 70 K=1,NOPLYR
TYPE 63,K
63 FORMAT(' YOUR NAME, PLAYER ',I1,': ',$)
65 ACCEPT 66,RNAME(K),ZANS
66 FORMAT(2A5)
IF(ZANS.EQ.' ')GO TO 70
TYPE 68
68 FORMAT(' HOW ABOUT A NICKNAME OF UNDER 6 LETTERS: ',$)
GO TO 65
70 CONTINUE
IF(NOPLYR.EQ.1)GO TO 73
TYPE 72
72 FORMAT(' DO YOU WANT ME TO PLAY? ',$)
ACCEPT 414,ZANS
IF(ZANS.NE.'Y')GO TO 74
73 NOPLYR=NOPLYR+1
RNAME(NOPLYR)='PDP10'
CMPUTR=NOPLYR
74 TYPE 75
75 FORMAT(' ROLL TO SEE WHO GOES FIRST:'/)
77 DO 86 K=1,NOPLYR
TROLL1=6.*RAN(X)+1.
TROLL2=6.*RAN(X)+1.
TYPE 80,RNAME(K),TROLL1,TROLL2
80 FORMAT(1X,A5,': YOU ROLL ',I1,' AND ',I1)
IF(K.EQ.1)IANS=TROLL1+TROLL2
IF(K.EQ.1.OR.TROLL1+TROLL2.NE.IANS)GO TO 84
TYPE 82
82 FORMAT(' TIE. REROLL:')
GO TO 77
84 IF(TROLL1+TROLL2.LT.IANS)GO TO 86
ANS=K
IANS=TROLL1+TROLL2
86 CONTINUE
TYPE 88,RNAME(ANS)
88 FORMAT(/' YOU GO FIRST, ',A5)
PLYR=ANS-1
TYPE 90
90 FORMAT(/' DO YOU WANT A POT ON FREE PARKING? ',$)
ACCEPT 414,RFREE
100 OLDPL=CANTPL
CANTPL=.FALSE.
IF(DOUBLE.NE.1)GO TO 1005
IF(MONEY(PLYR).LT.0)GO TO 1007
IF(OLDPL)180,108
1005 IF(AUTPIL(PLYR).NE.0)AUTPIL(PLYR)=MOD(AUTPIL(PLYR)+1,11)
PTIME=0
IF(TIMER.EQ.1)GO TO 106
1007 TYPE 101,MONEY(PLYR)
101 FORMAT(' CASH LEFT = $',I5)
IF(MONEY(PLYR).GE.0)GO TO 106
C DOESN'T WORK YET...
C IF(MVALUE(PLYR).GE.0-MONEY(PLYR).OR.NOPLYR.GT.2)GO TO 103
C TYPE 102
C102 FORMAT(' YOU ARE IN DEBT AND CANNOT COVER YOUR LOSSES.'/
C 1' YOU RETIRE FROM THE GAME.'/)
C IF(PLYR.EQ.1)RNAME(1)=RNAME(2)
C GO TO 1000
103 TYPE 104
104 FORMAT(' YOU ARE IN DEBT. YOU MUST RECTIFY THE SITUATION,
1 OR QUIT.')
CANTPL=.TRUE.
AUTPIL(PLYR)=0
GO TO 111
106 TIMER=2
PLYR=PLYR+1
IF(PLYR.GT.NOPLYR)PLYR=1
108 TYPE 109,RNAME(PLYR)
109 FORMAT(//1X,A5,':')
111 TYPE 112
112 FORMAT(' INSTRUCTIONS: ',$)
IF(AUTPIL(PLYR).NE.0)TYPE 113
113 FORMAT('+*'$)
STRAT=0
IF(AUTPIL(PLYR).NE.0)GO TO 161
IF(PLYR.NE.CMPUTR)GO TO 165
IF(.NOT.CANTPL)GO TO 135
IF(MONEY(PLYR).GE.0)GO TO 161
MFLAG=1
DO 114 K=1,22
IF(PROP(3,K).NE.CMPUTR)GO TO 114
IF(MCHECK(PLYR,K).EQ.0.OR.PROP(11,K).EQ.1)GO TO 114
IANS=K
STRAT=4
GO TO 161
114 CONTINUE
DO 116 J=1,2
DO 116 K=1,4
IF(J.EQ.2.AND.K.EQ.3)GO TO 118
IF(OTHPRP(J,1,K).NE.PLYR)GO TO 116
IF(OTHPRP(J,2,K).EQ.1)GO TO 116
IANS=K+22+(J-1)*4
STRAT=4
GO TO 161
116 CONTINUE
118 IF(CMONOP(1).EQ.0)GO TO 130
CC CHECK FOR LAST CHANCE HOUSE SELLING
IF(CMONOP(5).EQ.0)GO TO 124
IF(CMONOP(5).NE.CMONOP(2)*5)GO TO 122
MONOP=(CMONOP(3)+3)/3
CMONOP(3)=(MONOP-1)*3
IF(CMONOP(3).EQ.0)CMONOP(3)=1
120 CMONOP(6)=-1
122 IF(CMONOP(6).EQ.1)CALL BUYSELL
STRAT=7
ANS=2
J=0
DO 123 K=1,5
IF(CMONOP(5).LT.CMONOP(2)*K.OR.MONEY(PLYR)+(CMONOP(2)*K-1)
1*CMONOP(4)/2.GE.0)GO TO 161
123 J=K
GO TO 161
124 DO 126 K=1,8
IF(MCHECK(PLYR,K*3-2).EQ.0)GO TO 128
126 CONTINUE
GO TO 130
128 CMONOP(1)=0
CALL MONCOM(K)
CMONOP(5)=CMONOP(2)*5
CMONOP(3)=CMONOP(3)-CMONOP(2)+1
GO TO 120
130 TYPE 131
131 FORMAT(' I QUIT!')
GO TO 993
135 IF(JAIL(PLYR).EQ.0)GO TO 139
IANS=0
DO 137 K=1,22
137 IF(PROP(3,K).NE.0)IANS=IANS+1
IF(IANS.LT.17)STRAT=6
139 IF(MONEY(PLYR).LT.250)GO TO 161
IF(MFLAG.EQ.1.AND.MVALUE(PLYR).LT.450)GO TO 155
IF(CMONOP(1).NE.0)GO TO 143
DO 141 K=1,8
141 CALL MONCOM(K)
IF(CMONOP(1).EQ.0)GO TO 155
GO TO 147
143 IF(CMONOP(5).NE.CMONOP(2)*5)GO TO 149
CMONOP(1)=0
DO 145 K=1,8
145 IF(MCHECK(PLYR,K*3-2).NE.0)CALL MONCOM(K)
IF(CMONOP(1).NE.0)GO TO 147
CMONOP(1)=1
GO TO 155
147 CMONOP(5)=0
CMONOP(6)=1
149 IF(CMONOP(6).EQ.-1)CALL BUYSELL
IF(CMONOP(5).NE.0)GO TO 152
DO 151 IANS=CMONOP(3),CMONOP(3)-CMONOP(2)+1,-1
IF(PROP(11,IANS).EQ.1)GO TO 157
151 CONTINUE
152 IF(MONEY(PLYR).LT.CMONOP(4)+50)GO TO 155
STRAT=7
ANS=1
J=0
DO 153 K=1,5
X=CMONOP(2)*K
IF(MONEY(PLYR).LE.CMONOP(4)*X+50.OR.
1CMONOP(5)+X.GT.CMONOP(2)*5)GO TO 161
153 J=K
GO TO 161
155 IF(NUMOTH(1,PLYR).LT.3)GO TO 1565
DO 156 K=1,4
IF(OTHPRP(1,1,K).NE.PLYR.OR.OTHPRP(1,2,K).EQ.0)GO TO 156
IANS=K+22
GO TO 157
156 CONTINUE
1565 DO 158 K=22,1,-1
IF(PROP(11,K).EQ.0.OR.PROP(3,K).NE.PLYR)GO TO 158
IANS=K
157 STRAT=5
GO TO 161
158 CONTINUE
DO 160 J=2,1,-1
DO 160 K=4,1,-1
IF((J.EQ.2.AND.K.GT.2).OR.OTHPRP(J,1,K).NE.PLYR.OR.
1OTHPRP(J,2,K).NE.1)GO TO 160
IANS=K+22+(J-1)*4
GO TO 157
160 CONTINUE
MFLAG=0
161 IF(STRAT.EQ.0)STRAT=1
CALL SLP(1250)
TYPE 163,STRAT
163 FORMAT('+',I1)
GO TO 167
165 READ(5,166)STRAT
166 FORMAT(I)
IF(STRAT.NE.0)GO TO 1665
REREAD 414,ZANS
IF(ZANS.EQ.'H')GO TO 169
TYPE 1662
1662 FORMAT(' TYPE H FOR HELP')
GO TO 111
1665 IF(STRAT.NE.12)GO TO 167
AUTPIL(PLYR)=1
STRAT=1
167 IF(CANTPL.AND.STRAT.EQ.1)STRAT=0
IF(STRAT.GT.12)STRAT=STRAT-1
C GO TO (100,180,600,700,800,850,890,900,990,250,603,470,690,660)
GO TO (100,180,600,700,800,850,890,900,990,250,603,470,690,760)
1,STRAT+1
169 TYPE 170
170 FORMAT(' 1 ROLL DICE / END TURN',T27,'2 LIST ASSETS'/
1' 3 EXCHANGE OR SELL PROPERTY'/
2' 4 MORTGAGE',T17,'5 UNMORTGAGE PROPERTY'/
3' 6 GET OUT OF JAIL',3X,'7 BUY & SELL HOUSES & HOTELS'/
4' 8 QUIT',T17,'9 SAVE GAME FOR LATER'/
5' 10 LIST ANOTHER PLAYER''S ASSETS OR BOARD MAP'/
6' 11 SHOW ALL PLAYERS'' POSITIONS AND CURRENT PLAYER'/
7' 12 SET "AUTOMATIC PILOT" TO ROLL DICE FOR 10 MOVES'/
8' 13 STATUS OF THIS MONOPOLY',4X,'14 DISPLAY PROPERTY CARD')
C 8' 13 ASK COMPUTER TO MAKE TRADING OFFER')
GO TO 111
CC ROLL DICE
180 DOUBLE=0
FACTOR=1
FACT2=0
PTIME=PTIME+1
TROLL1=6.*RAN(X)+1.
TROLL2=6.*RAN(X)+1.
IF(TROLL1.EQ.TROLL2)DOUBLE=1
TYPE 182,TROLL1,TROLL2
182 FORMAT(' YOU ROLLED ',I1,' AND ',I1)
IF(DOUBLE.NE.1.OR.PTIME.NE.3)GO TO 186
TYPE 184
184 FORMAT(' YOU GO TO JAIL FOR 3 DOUBLES')
DOUBLE=0
GO TO 230
186 IF(JAIL(PLYR).EQ.0)GO TO 201
IF(DOUBLE.NE.1)GO TO 188
JAIL(PLYR)=0
GO TO 201
188 IF(JAIL(PLYR).EQ.3)GO TO 192
JAIL(PLYR)=JAIL(PLYR)+1
TYPE 190
190 FORMAT(' STILL IN JAIL')
GO TO 100
192 JAIL(PLYR)=0
IF(NOJAIL(PLYR).EQ.0)GO TO 198
TYPE 194
194 FORMAT(' YOUR "GET OUT OF JAIL FREE" CARD HAS BEEN USED')
CALL TURNIN(NOJAIL(PLYR))
GO TO 201
198 TYPE 199
199 FORMAT(' YOU PAY COMPULSORY $50 TO LEAVE JAIL')
MONEY(PLYR)=MONEY(PLYR)-50
FRPARK=FRPARK+50
201 LOC(PLYR)=LOC(PLYR)+TROLL1+TROLL2
IF(LOC(PLYR).GE.40)CALL PASSGO(PLYR,LOC(PLYR),MONEY(PLYR))
203 TYPE 204,(ZSQRE(N,LOC(PLYR)),N=1,3)
204 FORMAT(' YOU LAND ON ',3A5)
GO TO (100,400,501,400,215,300,400,500,400,400,100,
1400,302,400,400,300,400,501,400,400,210,
1400,500,400,400,300,400,400,302,400,230,
1400,400,501,400,300,500,400,232,400),LOC(PLYR)+1
CC FREE PARKING
210 AMT=FRPARK
FRPARK=0
IF(RFREE.NE.'Y')GO TO 100
TYPE 1317,AMT
1317 FORMAT(' YOU PICK UP $',I5)
MONEY(PLYR)=MONEY(PLYR)+AMT
GO TO 100
CC INCOME TAX
215 TYPE 216
216 FORMAT(' (1) PAY 10% OR (2) PAY $200? ',$)
IF(PLYR.NE.CMPUTR)GO TO 218
TPCNT=(MONEY(PLYR)+ASSETS(PLYR))/10
IANS=1
IF(TPCNT.GE.215)IANS=2
CC SO AS NOT TO GIVE THE COMPUTER AN UNFAIR ADVANTAGE
IF(TPCNT.GT.185.AND.TPCNT.LT.215)IANS=RAN(X)*2.+1.
CALL SLP(1000)
TYPE 163,IANS
GO TO (220,224),IANS
218 ACCEPT 166,IANS
IF(IANS.NE.1.AND.IANS.NE.2)GO TO 215
IF(IANS.EQ.2)GO TO 224
TPCNT=(MONEY(PLYR)+ASSETS(PLYR))/10
220 TYPE 221,TPCNT
221 FORMAT(' YOU PAY 10% = $',I4)
MONEY(PLYR)=MONEY(PLYR)-TPCNT
FRPARK=FRPARK+TPCNT
GO TO 100
224 MONEY(PLYR)=MONEY(PLYR)-200
FRPARK=FRPARK+200
GO TO 100
CC GO TO JAIL SQUARE
230 JAIL(PLYR)=1
LOC(PLYR)=10
DOUBLE=0
GO TO 100
CC LUXURY TAX
232 MONEY(PLYR)=MONEY(PLYR)-75
FRPARK=FRPARK+75
GO TO 100
CC ACTION 9 SAVE GAME FOR LATER
250 TYPE 252
252 FORMAT(' SO YOU WANT TO SAVE THE GAME FOR LATER? '$)
ACCEPT 414,ZANS
IF(ZANS.NE.'Y')GO TO 111
CALL OFILE(DSK,'MONOP')
WRITE(DSK)MFLAG,CMPUTR,FRPARK,NOPLYR,CMONOP,RFREE,DOUBLE,PTIME,
1CANTPL,JAIL,LOC,NOJAIL,MONEY,ASSETS,MVALUE,OTHPRP,NUMOTH,RNAME
2,TIMER,CARDS,MOWN,PLYR,(PROP(3,N),PROP(10,N),PROP(11,N),N=1,22)
TYPE 255
255 FORMAT(' JOB SAVED. SEE YOU SOON.')
STOP
CC RRS AND UTILS
300 IP=(LOC(PLYR)+5)/10
X=1
GO TO 306
302 IP=LOC(PLYR)/12
X=2
306 IF(OTHPRP(X,1,IP).EQ.PLYR)GO TO 100
IF(OTHPRP(X,1,IP).NE.0)GO TO 323
308 AMT=50*(5-X)
IF(MONEY(PLYR).LT.AMT)TYPE 310,MONEY(PLYR)
310 FORMAT(' CASH ON HAND = $',I4)
F1=1
312 TYPE 313,AMT
313 FORMAT(' PRICE $',I3,'. BUY? ',$)
IF(PLYR.NE.CMPUTR)GO TO 411
ZANS='Y'
IF(MONEY(PLYR).LT.AMT.AND.MFLAG.EQ.1.AND.MVALUE(PLYR).LT.450)
1ZANS='N'
CALL SLP(1000)
TYPE 315,ZANS
315 FORMAT('+',A1)
GO TO 416
320 OTHPRP(X,1,IP)=PLYR
NUMOTH(X,PLYR)=NUMOTH(X,PLYR)+1
GO TO 418
323 IF(OTHPRP(X,2,IP).EQ.1)GO TO 100
TPLYR=OTHPRP(X,1,IP)
ARENT=FACTOR*25*2**(NUMOTH(1,TPLYR)-1)
IF(X.EQ.1)GO TO 325
IF(NUMOTH(2,TPLYR).EQ.2)FACT2=6
ARENT=(TROLL1+TROLL2)*(FACT2+4)
325 TYPE 452,ARENT,RNAME(TPLYR)
MONEY(PLYR)=MONEY(PLYR)-ARENT
MONEY(TPLYR)=MONEY(TPLYR)+ARENT
GO TO 100
CC DOESN'T WANT TO BUY -- AUCTION?
330 GO TO 100
CC PROPS
400 DO 402 X=1,22
IF(LOC(PLYR).EQ.PROP(1,X))GO TO 405
402 CONTINUE
405 MONOP=(X+3)/3
IF(PROP(3,X).NE.0)GO TO 450
F1=2
IF(MONEY(PLYR).LT.PROP(2,X))TYPE 310,MONEY(PLYR)
407 TYPE 313,PROP(2,X)
IF(PLYR.NE.CMPUTR)GO TO 411
ZANS='Y'
IF(MONOP.EQ.1.OR.MONOP.EQ.8)GO TO 409
IP=(MONOP-1)*3
IF(PROP(3,IP).NE.PROP(3,IP+1).AND.
1PROP(3,IP+1).NE.PROP(3,IP+2).AND.
2PROP(3,IP).NE.PROP(3,IP+2).AND.
3MONEY(PLYR).LT.500)ZANS='N'
409 IF(MONEY(PLYR).LT.PROP(2,X).AND.MFLAG.EQ.1.AND.
1MVALUE(PLYR).LT.450.AND.MOWN(PLYR,MONOP).LT.2)ZANS='N'
CALL SLP(1000)
TYPE 315,ZANS
GO TO 416
411 READ(5,166)ANS
IF(ANS.EQ.0)GO TO 413
IF(ANS.EQ.2)GO TO 600
IF(ANS.EQ.10)GO TO 603
IF(ANS.EQ.11)GO TO 470
IF(ANS.EQ.13)GO TO 690
IF(ANS.EQ.14)GO TO 760
GO TO (312,407),F1
413 REREAD 414,ZANS
414 FORMAT(A1)
IF(ZANS.EQ.'Y'.OR.ZANS.EQ.'N')GO TO 416
TYPE 415
415 FORMAT(' Y = YES N = NO 2 = LIST ASSETS'/
1' 10 = LIST ANOTHER PLAYER''S ASSETS OR BOARD MAP'/
6' 11 = SHOW ALL PLAYERS'' POSITIONS AND CURRENT PLAYER'/
7' 13 = STATUS OF THIS MONOP',4X,'14 = DISPLAY PROPERTY CARD')
GO TO (312,407),F1
416 F2=F1
F1=0
IF(ZANS.NE.'Y')GO TO (330,430),F2
IF(F2.EQ.1)GO TO 320
AMT=PROP(2,X)
PROP(3,X)=PLYR
MOWN(PLYR,MONOP)=MOWN(PLYR,MONOP)+1
418 MONEY(PLYR)=MONEY(PLYR)-AMT
ASSETS(PLYR)=ASSETS(PLYR)+AMT
MVALUE(PLYR)=MVALUE(PLYR)+AMT/2
GO TO 100
CC DOESN'T WANT TO BUY -- AUCTION?
430 GO TO 100
CC ALREADY OWNED
450 IP=PROP(3,X)
IF(IP.EQ.PLYR.OR.PROP(11,X).EQ.1)GO TO 100
ARENT=PROP(4,X)
IF(MOWN(IP,MONOP).EQ.3)ARENT=ARENT*2
IF(PROP(10,X).GT.0)ARENT=PROP(PROP(10,X)+4,X)
TYPE 452,ARENT,RNAME(IP)
452 FORMAT(' YOU PAY A RENT OF $',I4,' TO ',A5)
MONEY(PLYR)=MONEY(PLYR)-ARENT
MONEY(IP)=MONEY(IP)+ARENT
GO TO 100
CC ACTION 11 GIVE EVERYONE'S LOCATION
470 DO 476 K=1,NOPLYR
ZANS=' '
IF(K.EQ.PLYR)ZANS='*'
J=LOC(K)/10+1
IF(JAIL(K).NE.0)TYPE 472,ZANS,RNAME(K)
472 FORMAT(1X,A1,A5,': IN JAIL')
IF(JAIL(K).EQ.0)TYPE 474,ZANS,RNAME(K),(ZSQRE(N,LOC(K)),
1N=1,3),J
474 FORMAT(1X,A1,A5,': ON ',3A5,'(SIDE ',I1,')')
476 CONTINUE
TYPE 478
478 FORMAT(' *CURRENT PLAYER')
GO TO 639
CC CHANCE AND COMMUNITY CHEST
500 X=1
GO TO 505
501 X=2
505 CHOICE=CARDS(X,1)
TYPE 507
507 FORMAT(' CARD: ',$)
DO 510 K=1,15
510 CARDS(X,K)=CARDS(X,K+1)
IF(CHOICE.NE.1)GO TO 512
CARDS(X,16)=0
GO TO 514
512 IF(CARDS(X,16).EQ.0)GO TO 513
CARDS(X,16)=CHOICE
GO TO 514
513 CARDS(X,15)=CHOICE
514 IF(X.EQ.1)GO TO (515,518,521,524,527,530,533,536,539,542,
1545,548,551,554,557,551),CHOICE
IF(X.EQ.2)GO TO (515,524,530,560,563,566,569,572,575,578,
1581,584,587,590,593,596),CHOICE
CC CHANCE & COMM CH
515 TYPE 516
516 FORMAT('+GET OUT OF JAIL FREE')
NOJAIL(PLYR)=NOJAIL(PLYR)+1+9*(X-1)
GO TO 100
518 TYPE 519
519 FORMAT('+PAY POOR TAX OF $15')
MONEY(PLYR)=MONEY(PLYR)-15
FRPARK=FRPARK+15
GO TO 100
521 TYPE 522
522 FORMAT('+BANK PAYS DIVIDEND OF $50')
MONEY(PLYR)=MONEY(PLYR)+50
GO TO 100
524 TYPE 525
525 FORMAT('+GO DIRECTLY TO JAIL')
GO TO 230
527 TYPE 528
528 FORMAT('+ADVANCE TO NEAREST UTILITY - PAY TEN TIMES ROLL')
IP=12
IF(LOC(PLYR).EQ.22)IP=28
IF(LOC(PLYR).EQ.36)CALL PASSGO(PLYR,LOC(PLYR),MONEY(PLYR))
LOC(PLYR)=IP
FACT2=6
GO TO 203
530 TYPE 531
531 FORMAT('+ADVANCE TO GO')
MONEY(PLYR)=MONEY(PLYR)+200
LOC(PLYR)=0
GO TO 100
533 TYPE 534
534 FORMAT('+ADVANCE TO READING RR')
CALL PASSGO(PLYR,LOC(PLYR),MONEY(PLYR))
LOC(PLYR)=5
GO TO 300
536 TYPE 537
537 FORMAT('+GO BACK 3 SPACES')
LOC(PLYR)=LOC(PLYR)-3
GO TO 203
539 TYPE 540
540 FORMAT('+ADVANCE TO ILLINOIS AVE.')
IF(LOC(PLYR).EQ.36)CALL PASSGO(PLYR,LOC(PLYR),MONEY(PLYR))
LOC(PLYR)=24
GO TO 400
542 TYPE 543
543 FORMAT('+ADVANCE TO ST CHARLES PLACE')
IF(LOC(PLYR).NE.7)CALL PASSGO(PLYR,LOC(PLYR),MONEY(PLYR))
LOC(PLYR)=11
GO TO 400
545 TYPE 546
546 FORMAT('+GENERAL REPAIRS - PAY $25 PER HOUSE, $100 PER HOTEL')
F1=25
F2=100
547 AMT=0
DO 5475 K=1,22
IF(PROP(3,K).NE.PLYR)GO TO 5475
IF(PROP(10,K).EQ.5)AMT=AMT+F2
IF(PROP(10,K).NE.5)AMT=AMT+F1*PROP(10,K)
5475 CONTINUE
TYPE 5478,AMT
5478 FORMAT(' YOU PAY A TOTAL OF $',I4)
MONEY(PLYR)=MONEY(PLYR)-AMT
FRPARK=FRPARK+AMT
GO TO 100
548 TYPE 549
549 FORMAT('+YOU ARE ELECTED CHAIRMAN, PAY EACH PLAYER $50')
F2=-50
GO TO 586
551 TYPE 552
552 FORMAT('+ADVANCE TO NEAREST RR AND PAY DOUBLE USUAL RENT')
FACTOR=2
IP=15
IF(LOC(PLYR).EQ.22)IP=25
IF(LOC(PLYR).NE.36)GO TO 553
CALL PASSGO(PLYR,LOC(PLYR),MONEY(PLYR))
IP=5
553 LOC(PLYR)=IP
GO TO 203
554 TYPE 555
555 FORMAT('+BUILDING AND LOAN MATURES - COLLECT $150')
MONEY(PLYR)=MONEY(PLYR)+150
GO TO 100
557 TYPE 558
558 FORMAT('+ADVANCE TO BOARDWALK')
LOC(PLYR)=39
GO TO 400
CC C CHEST
560 TYPE 561
561 FORMAT('+XMAS FUND MATURES - COLLECT $100')
562 MONEY(PLYR)=MONEY(PLYR)+100
GO TO 100
563 TYPE 564
564 FORMAT('+BANK ERROR IN YOUR FAVOR - COLLECT $200')
MONEY(PLYR)=MONEY(PLYR)+200
GO TO 100
566 TYPE 567
567 FORMAT('+PAY SCHOOL TAX OF $150')
MONEY(PLYR)=MONEY(PLYR)-150
FRPARK=FRPARK+150
GO TO 100
569 TYPE 570
570 FORMAT('+INCOME TAX REFUND - COLLECT $20')
MONEY(PLYR)=MONEY(PLYR)+20
GO TO 100
572 TYPE 573
573 FORMAT('+YOU WIN 2ND PRIZE IN BEAUTY CONTEST - COLLECT $10')
MONEY(PLYR)=MONEY(PLYR)+10
GO TO 100
575 TYPE 576
576 FORMAT('+RECEIVE FOR SERVICES $25')
MONEY(PLYR)=MONEY(PLYR)+25
GO TO 100
578 TYPE 579
579 FORMAT('+STREET REPAIRS - PAY $40 PER HOUSE, $115 PER HOTEL')
F1=40
F2=115
GO TO 547
581 TYPE 582
582 FORMAT('+LIFE INSURANCE MATURES - COLLECT $100')
GO TO 562
584 TYPE 585
585 FORMAT('+GRAND OPERA OPENING - COLLECT $50 FROM EACH PLAYER')
F2=50
586 DO 5865 K=1,NOPLYR
5865 MONEY(K)=MONEY(K)-F2
MONEY(PLYR)=MONEY(PLYR)+NOPLYR*F2
GO TO 100
587 TYPE 588
588 FORMAT('+FROM SALE OF STOCK YOU GET $45')
MONEY(PLYR)=MONEY(PLYR)+45
GO TO 100
590 TYPE 591
591 FORMAT('+YOU INHERIT $100')
GO TO 562
593 TYPE 594
594 FORMAT('+PAY HOSPITAL $100')
MONEY(PLYR)=MONEY(PLYR)-100
FRPARK=FRPARK+100
GO TO 100
596 TYPE 597
597 FORMAT('+DOCTOR''S FEE - PAY $50')
MONEY(PLYR)=MONEY(PLYR)-50
FRPARK=FRPARK+50
GO TO 100
CC ACTION 2 REQUEST ASSETS
600 TPLYR=PLYR
GO TO 610
603 TYPE 604
604 FORMAT(' 0 FREE PROPERTIES')
DO 606 K=1,NOPLYR
606 IF(K.NE.PLYR)TYPE 710,K,RNAME(K)
TYPE 608
608 FORMAT(' 6 BOARD MAP'/
1' WHOSE ASSETS WOULD YOU LIKE TO SEE? #: ',$)
ACCEPT 166,TPLYR
IF(TPLYR.EQ.0)GO TO 614
IF(TPLYR.EQ.6)GO TO 642
610 IP=MONEY(TPLYR)+ASSETS(TPLYR)
TYPE 612,MONEY(TPLYR),ASSETS(TPLYR),IP
612 FORMAT(' CASH = $',I5,5X,'PROPERTY VALUE = $',I5/
1' TOTAL ASSETS = $',I5)
614 IP=0
DO 631 K=1,22
IF(PROP(3,K).NE.TPLYR)GO TO 631
MONOP=(K+3)/3
IF(IP.NE.MONOP)TYPE 616
616 FORMAT(1X)
C618 FORMAT('+',1X)
IP=MONOP
IF(PROP(10,K).NE.0.OR.PROP(11,K).NE.0)GO TO 622
TYPE 620,K,(ZSQRE(N,PROP(1,K)),N=1,3)
620 FORMAT(1X,I2,1X,3A5)
GO TO 631
622 TYPE 623,K,(ZSQRE(N,PROP(1,K)),N=1,3)
623 FORMAT(1X,I2,1X,3A5,2X,$)
IF(PROP(10,K).EQ.5)TYPE 625
625 FORMAT('+HOTEL')
IF(PROP(10,K).NE.0.AND.PROP(10,K).NE.5)TYPE 627,PROP(10,K)
627 FORMAT('+',I1,' HOUSES')
IF(PROP(11,K).EQ.1)TYPE 629
629 FORMAT('+MORTGAGED')
631 CONTINUE
TYPE 616
IF(TPLYR.NE.0.AND.NUMOTH(1,TPLYR).EQ.0.AND.
1NUMOTH(2,TPLYR).EQ.0)GO TO 639
DO 637 J=1,2
DO 635 K=1,4
IF(J.EQ.2.AND.K.EQ.3)GO TO 637
IF(OTHPRP(J,1,K).NE.TPLYR)GO TO 635
NAME=K*10-5
IF(J.EQ.2)NAME=(K*4-1)*4
IP=K+J*4+18
IF(OTHPRP(J,2,K).EQ.0)GO TO 633
TYPE 623,IP,(ZSQRE(N,NAME),N=1,3)
TYPE 629
GO TO 635
633 TYPE 620,IP,(ZSQRE(N,NAME),N=1,3)
635 CONTINUE
637 TYPE 616
IF(MOD(NOJAIL(TPLYR),10).EQ.1)TYPE 638
IF(NOJAIL(TPLYR).GE.10)TYPE 6385
638 FORMAT(' 29 GET OUT OF JAIL FREE CARD (CHANCE)')
6385 FORMAT(' 30 GET OUT OF JAIL FREE CARD (COMM.CHEST)')
IF(NOJAIL(TPLYR).NE.0)TYPE 616
639 IF(F1.EQ.1)GO TO (300,302),X
IF(F1.EQ.2)GO TO 405
GO TO 111
642 DO 648 K=0,11
IF(K.EQ.0)TYPE 644,(J,(ZSQRE(N,PROP(1,J)),N=1,3),
1RNAME(PROP(3,J)),J=K+12,K+12)
IF(K.EQ.11)TYPE 645,K,(ZSQRE(N,PROP(1,K)),N=1,3),
1RNAME(PROP(3,K))
IF(K.NE.0.AND.K.NE.11)TYPE 646,(J,(ZSQRE(N,PROP(1,J)),
1N=1,3),RNAME(PROP(3,J)),J=K,K+12,12)
644 FORMAT(32X,I2,1X,3A5,' (',A5,')')
645 FORMAT(1X,I2,1X,3A5,' (',A5,')')
646 FORMAT(1X,I2,1X,3A5,' (',A5,')',5X,I2,1X,3A5,' (',
1A5,')')
648 IF(MOD(K+1,3).EQ.0)TYPE 616
DO 650 K=1,2
OTHPRP(2,1,4)=K*10-5
OTHPRP(2,2,4)=(K*4-1)*4
TT(1)=K+22
TT(2)=K+26
650 TYPE 646,(TT(J),(ZSQRE(N,OTHPRP(2,J,4)),N=1,3),
1RNAME(OTHPRP(J,1,K)),J=1,2)
DO 652 K=3,4
TT(1)=K+22
652 TYPE 645,TT(1),(ZSQRE(N,K*10-5),N=1,3),
1RNAME(OTHPRP(1,1,K))
TYPE 616
GO TO 639
CC ACTION 13 COMPUTER MAKES TRADING OFFER
C660 J=2
C DO 664 MONOP=8,2,-1
C IF(MOWN(CMPUTR,MONOP).EQ.2.AND.MOWN(PLYR,MONOP).EQ.1)GO TO 669
C664 CONTINUE
C666 TYPE 667
C667 FORMAT(' SORRY, NO DEALS RIGHT NOW.')
C GO TO 111
C669 DO 671 MONOP2=J,8
C IF(MOWN(PLYR,MONOP2).EQ.2.AND.MOWN(CMPUTR,MONOP2).EQ.1)GO TO 673
C671 CONTINUE
C GO TO 666
C673 TYPE 674
C674 FORMAT(' I''D MAKE A DEAL NOW, BUT I DON''T TRUST
C 1 MY TRADING ROUTINE YET.')
C GO TO 111
CC ACTION 13 MONOPOLY STATUS
690 DO 692 K=1,22
IF(PROP(1,K).EQ.LOC(PLYR))GO TO 694
692 CONTINUE
ZANS=FLOAT(LOC(PLYR))/5.
IF(ZANS.EQ.AINT(ZANS).AND.ZANS/2..NE.AINT(ZANS/2.))GO TO 697
IF(LOC(PLYR).EQ.12.OR.LOC(PLYR).EQ.28)GO TO 699
TYPE 693
693 FORMAT(' YOU ARE NOT ON A MONOPOLY')
GO TO 639
694 START=MAX0(K/3*3,1)
FINISH=MIN0(K/3*3+2,22)
DO 696 K=START,FINISH
IF(PROP(10,K).NE.0.OR.PROP(11,K).NE.0)GO TO 695
TYPE 6945,K,(ZSQRE(N,PROP(1,K)),N=1,3),RNAME(PROP(3,K))
6945 FORMAT(I3,1X,3A5,' (',A5,')')
GO TO 696
695 TYPE 6955,K,(ZSQRE(N,PROP(1,K)),N=1,3),RNAME(PROP(3,K))
6955 FORMAT(I3,1X,3A5,' (',A5,') ',$)
IF(PROP(10,K).EQ.5)TYPE 625
IF(PROP(10,K).NE.0.AND.PROP(10,K).NE.5)TYPE 627,PROP(10,K)
IF(PROP(11,K).EQ.1)TYPE 629
696 CONTINUE
GO TO 6997
697 DO 698 K=23,26
IF(OTHPRP(1,2,K-22).EQ.0)TYPE 6945,K,(ZSQRE(N,(K-23)*10+5),N=1,3)
1,RNAME(OTHPRP(1,1,K-22))
IF(OTHPRP(1,2,K-22).EQ.1)TYPE 6975,K,(ZSQRE(N,(K-23)*10+5),N=1,3)
1,RNAME(OTHPRP(1,1,K-22))
6975 FORMAT(I3,1X,3A5,' (',A5,') MORTGAGED')
698 CONTINUE
GO TO 6997
699 DO 6993 K=27,28
IF(OTHPRP(2,2,K-26).EQ.0)TYPE 6945,K,(ZSQRE(N,(K-27)*16+12),N=1,3
1),RNAME(OTHPRP(2,1,K-26))
IF(OTHPRP(2,2,K-26).EQ.1)TYPE 6975,K,(ZSQRE(N,(K-27)*16+12),N=1,3
1),RNAME(OTHPRP(2,1,K-26))
6993 CONTINUE
6997 TYPE 616
GO TO 639
C ACTION 3 TRADE MONEY OR PROPERTY
700 TYPE 701,RNAME(PLYR)
701 FORMAT(' ARE YOU (1) GIVING OR (2) RECEIVING, ',A5,'? ',$)
ACCEPT 166,ANS
IF(ANS.NE.1.AND.ANS.NE.2)GO TO 111
TYPE 703
703 FORMAT(' IS (1) MONEY OR (2) PROPERTY TO CHANGE HANDS? ',$)
ACCEPT 166,IANS
IF(IANS.NE.1.AND.IANS.NE.2)GO TO 111
IF(NOPLYR.GT.2)GO TO 707
AA=1
BB=2
IF(ANS.NE.PLYR)GO TO 705
GO TO (716,725),IANS
GO TO 111
705 AA=2
BB=1
GO TO (716,725),IANS
GO TO 111
707 DO 709 K=1,NOPLYR
709 IF(K.NE.PLYR)TYPE 710,K,RNAME(K)
710 FORMAT(1X,I1,1X,A5)
IF(ANS.EQ.1)TYPE 712
IF(ANS.EQ.2)TYPE 714
712 FORMAT(' WHAT PLAYER # IS RECEIVING THE GOODS? ',$)
714 FORMAT(' WHAT PLAYER # IS DONATING THE GOODS? ',$)
ACCEPT 166,CHOICE
IF(CHOICE.LT.1.OR.CHOICE.GT.NOPLYR)GO TO 111
AA=PLYR
IF(ANS.EQ.2)AA=CHOICE
BB=CHOICE
IF(ANS.EQ.2)BB=PLYR
GO TO (716,725),IANS
GO TO 111
CC EXCH MONEY
716 TYPE 717
717 FORMAT(' HOW MUCH MONEY IS INVOLVED? $',$)
ACCEPT 166,AMT
IF(AMT.GT.0)GO TO 718
TYPE 7175
7175 FORMAT(' MUST BE A POSITIVE AMOUNT')
GO TO 111
718 IF(MONEY(AA).GE.AMT)GO TO 721
TYPE 719,RNAME(AA)
719 FORMAT(1X,A5,' DOESN''T HAVE THAT MUCH')
GO TO 111
721 IF(PLYR.EQ.AA)GO TO 723
IF(NCNSNT(RNAME(AA)).EQ.0)GO TO 111
723 MONEY(AA)=MONEY(AA)-AMT
MONEY(BB)=MONEY(BB)+AMT
GO TO 111
CC EXCH PROP
725 TYPE 726
726 FORMAT(' WHAT IS THE # OF THE PROP. INVOLVED? ',$)
ACCEPT 166,IANS
IF(IANS.LT.1.OR.IANS.GT.30)GO TO 111
IF(PLYR.EQ.AA)GO TO 728
IF(NCNSNT(RNAME(AA)).EQ.0)GO TO 111
728 IF(IANS.LT.29)GO TO 729
IANS=(IANS-29)*9+1
IF(IANS.NE.NOJAIL(AA).AND.NOJAIL(AA).NE.11)GO TO 732
NOJAIL(AA)=NOJAIL(AA)-IANS
NOJAIL(BB)=NOJAIL(BB)+IANS
GO TO 747
729 CALL WHERTO(IANS,ANS)
GO TO (741,741,730)ANS
GO TO 111
730 IF(PROP(3,IANS).EQ.AA)GO TO 735
732 TYPE 733,RNAME(AA)
733 FORMAT(' THAT PROPERTY ISN''T OWNED BY ',A5)
GO TO 111
735 IF(MCHECK(PLYR,IANS).EQ.1)GO TO 739
TYPE 737
737 FORMAT(' PROPERTIES ON MONOPOLIES WITH HOUSES ARE NOT
1 EXCHANGEABLE')
GO TO 111
739 PROP(3,IANS)=BB
ARENT=PROP(2,IANS)/(PROP(11,IANS)+1)
N=ARENT-PROP(2,IANS)/2
MONOP=(IANS+3)/3
MOWN(AA,MONOP)=MOWN(AA,MONOP)-1
MOWN(BB,MONOP)=MOWN(BB,MONOP)+1
AMT=PROP(2,IANS)/2
GO TO 742
741 IF(OTHPRP(ANS,1,IANS).NE.AA)GO TO 732
OTHPRP(ANS,1,IANS)=BB
ARENT=50*(5-ANS)/(OTHPRP(ANS,2,IANS)+1)
N=ARENT-25*(5-ANS)
NUMOTH(ANS,AA)=NUMOTH(ANS,AA)-1
NUMOTH(ANS,BB)=NUMOTH(ANS,BB)+1
AMT=25*(5-ANS)
742 ASSETS(AA)=ASSETS(AA)-ARENT
ASSETS(BB)=ASSETS(BB)+ARENT
MVALUE(AA)=MVALUE(AA)-N
MVALUE(BB)=MVALUE(BB)+N
IF((ANS.LT.3.AND.OTHPRP(ANS,2,IANS).EQ.0).OR.
1(ANS.EQ.3.AND.PROP(11,IANS).EQ.0))GO TO 747
743 TYPE 744,RNAME(BB)
744 FORMAT(' TO ',A5,': PROPERTY IS MORTGAGED. UNMORTGAGE?'/
1' (IF NOT, YOU PAY A 10% TRANSFERRAL TAX) ? ',$)
IF(BB.NE.CMPUTR)GO TO 746
CALL SLP(1000)
ZANS='Y'
TYPE 315,ZANS
GO TO (872,872,864),ANS
746 ACCEPT 414,ZANS
IF(ZANS.EQ.'Y')GO TO (872,872,864),ANS
MONEY(BB)=MONEY(BB)-AMT/5
747 TYPE 748,RNAME(AA),RNAME(BB)
748 FORMAT(1X,A5,': GIVING ANY MORE PROPERTY TO ',A5,'? ',$)
ACCEPT 414,ZANS
IF(ZANS.EQ.'Y')GO TO 725
GO TO 111
CC ACTION 14 DISPLAY PROPERTY CARD
760 TYPE 762
762 FORMAT(' PROPERTY #',$)
ACCEPT 166,IANS
IF(IANS.GE.1.AND.IANS.LE.22)GO TO 770
IF(IANS.GE.23.AND.IANS.LE.26)GO TO 776
IF(IANS.NE.27.AND.IANS.NE.28)GO TO 639
TYPE 764,IANS,(ZSQRE(N,(IANS-27)*16+12),N=1,3),RNAME(OTHPRP(2,1,
1IANS-26))
764 FORMAT(I3,1X,3A5,' (',A5,')',10X,'PRICE $75'/' RENT IS FOUR TIMES
1 ROLL IF ONE UTILITY IS OWNED,'/' TEN TIMES ROLL IF BOTH.'/)
GO TO 639
770 K=PROP(2,IANS)/2
TYPE 772,IANS,(ZSQRE(N,PROP(1,IANS)),N=1,3),RNAME(PROP(3,IANS))
TYPE 773,PROP(2,IANS),(PROP(N,IANS),N=4,9),K
772 FORMAT(I3,1X,3A5,' (',A5,')')
773 FORMAT(' PRICE $',I3,10X,'RENT $',I2/' WITH 1
1 HOUSE $',I4,10X,'WITH 2 HOUSES $',I4/' WITH 3 HOUSES $',I4,10X,
1'WITH 4 HOUSES $',I4/' WITH HOTEL $',I4,10X,'M
2ORTGAGE VALUE $',I3/)
GO TO 639
776 TYPE 778,IANS,(ZSQRE(N,(IANS-23)*10+5),N=1,3),RNAME(OTHPRP(1,1,
1IANS-22))
778 FORMAT(I3,1X,3A5,' (',A5,')',10X,'PRICE $200'/' RENT WITH 1
1 RR $ 25'/' WITH 2 RR $ 50'/' WITH 3 RR $100'/
2' WITH 4 RR $200'/)
GO TO 639
C ACTION 4 MORTGAGING PROPERTY
800 TYPE 801
801 FORMAT(' MORTGAGING PROPERTY #: ',$)
IF(PLYR.NE.CMPUTR)GO TO 805
CALL SLP(800)
TYPE 803,IANS
803 FORMAT('+',I2)
GO TO 807
805 ACCEPT 166,IANS
IF(IANS.LT.1.OR.IANS.GT.28)GO TO 111
807 CALL WHERTO(IANS,ANS)
GO TO (827,827,809),ANS
809 IF(PROP(3,IANS).EQ.PLYR)GO TO 814
811 TYPE 812
812 FORMAT(' THAT PROPERTY''S NOT YOURS')
GO TO 111
814 IF(PROP(11,IANS).NE.1)GO TO 818
815 TYPE 816
816 FORMAT(' PROPERTY ALREADY MORTGAGED')
GO TO 111
818 IF(MCHECK(PLYR,IANS).EQ.1)GO TO 823
TYPE 821
821 FORMAT(' CANNOT BE MORTGAGED BEFORE HOUSES ARE SOLD')
GO TO 111
823 PROP(11,IANS)=1
AMT=PROP(2,IANS)/2
824 TYPE 825
825 FORMAT(' DONE.')
MONEY(PLYR)=MONEY(PLYR)+AMT
ASSETS(PLYR)=ASSETS(PLYR)-AMT
MVALUE(PLYR)=MVALUE(PLYR)-AMT
GO TO 111
827 IF(OTHPRP(ANS,1,IANS).NE.PLYR)GO TO 811
IF(OTHPRP(ANS,2,IANS).EQ.1)GO TO 815
OTHPRP(ANS,2,IANS)=1
AMT=25*(5-ANS)
GO TO 824
CC ACTION 5 UNMORTGAGING PROPERTY
850 TYPE 851
851 FORMAT(' UNMORTGAGING PROPERTY #: ',$)
IF(PLYR.NE.CMPUTR)GO TO 853
CALL SLP(800)
TYPE 803,IANS
GO TO 855
853 ACCEPT 166,IANS
IF(IANS.LT.1.OR.IANS.GT.28)GO TO 111
855 CALL WHERTO(IANS,ANS)
BB=PLYR
GO TO (870,870,860)ANS
860 IF(PROP(3,IANS).NE.PLYR)GO TO 811
IF(PROP(11,IANS).EQ.1)GO TO 863
861 TYPE 862
862 FORMAT(' PROPERTY NOT MORTGAGED')
GO TO 111
863 AMT=PROP(2,IANS)/2
864 PROP(11,IANS)=0
865 TYPE 825
MONEY(BB)=MONEY(BB)-AMT*11/10
ASSETS(BB)=ASSETS(BB)+AMT
MVALUE(BB)=MVALUE(BB)+AMT
GO TO 111
870 IF(OTHPRP(ANS,1,IANS).NE.PLYR)GO TO 811
IF(OTHPRP(ANS,2,IANS).NE.1)GO TO 861
AMT=25*(5-ANS)
872 OTHPRP(ANS,2,IANS)=0
GO TO 865
CC ACTION 6 GET OUT OF JAIL
890 IF(JAIL(PLYR).NE.0)GO TO 892
TYPE 891
891 FORMAT(' BUT YOU''RE NOT IN JAIL!')
GO TO 111
892 IF(NOJAIL(PLYR).EQ.0)GO TO 893
CALL TURNIN(NOJAIL(PLYR))
TYPE 194
GO TO 898
893 MONEY(PLYR)=MONEY(PLYR)-50
FRPARK=FRPARK+50
TYPE 896
896 FORMAT(' $50 PAID -- YOU MAY MOVE THIS TURN')
898 JAIL(PLYR)=0
GO TO 111
CC ACTION 7 BUYING AND SELLING HOUSES AND HOTELS
900 TYPE 901
901 FORMAT(' TYPE THE # OF ANY PROPERTY IN THE MONOPOLY YOU WISH'/
1' TO DEVELOP OR UNDEVELOP: ',$)
IF(PLYR.NE.CMPUTR)GO TO 905
IANS=CMONOP(3)
IF(J.NE.0)GO TO 903
X=1
IF(ANS.EQ.2)X=-1
CMONOP(3)=CMONOP(3)-X
IF(MOD(CMONOP(5)+X,CMONOP(2)).EQ.0)CMONOP(3)=CMONOP(3)+
1CMONOP(2)*X
903 CALL SLP(1000)
TYPE 803,IANS
GO TO 907
905 ACCEPT 166,IANS
IF(IANS.LT.1.OR.IANS.GT.22)GO TO 111
907 MONOP=(IANS+3)/3
IF(MOWN(PLYR,MONOP).EQ.3)GO TO 911
TYPE 909
909 FORMAT(' YOU DON''T OWN THAT MONOPOLY')
GO TO 111
911 START=MAX0((MONOP-1)*3,1)
FINISH=MIN0((MONOP-1)*3+2,22)
NOPROP=FINISH-START+1
TSUB=0
CHOICE=0
DO 912 K=START,FINISH
IF(PROP(11,K).EQ.1)GO TO 924
TSUB=TSUB+PROP(10,K)
912 CHOICE=CHOICE+PROP(2,K)
IF(TSUB.NE.0)GO TO 9125
F1=0
GO TO 920
9125 F1=CHOICE/2
IF(TSUB.EQ.NOPROP*5.OR.MONEY(PLYR).LT.0)GO TO 960
913 TYPE 914
914 FORMAT(' ARE YOU (1) BUYING OR (2) SELLING HOUSES? ',$)
IF(PLYR.NE.CMPUTR)GO TO 916
CALL SLP(1000)
TYPE 163,ANS
GO TO (920,960),ANS
916 ACCEPT 166,ANS
GO TO (920,960),ANS
GO TO 111
920 ARENT=(MONOP+1)/2*50
DO 922 K=START,FINISH
IF(PROP(11,K).EQ.1)GO TO 924
922 CONTINUE
GO TO 927
924 TYPE 925
925 FORMAT(' CAN''T DEVELOP - ONE OF THOSE PROPERTIES IS MORTGAGED')
GO TO 111
927 TYPE 928,ARENT
928 FORMAT(' HOUSES ARE $',I3,' APIECE. 5 HOUSES MAKE A HOTEL.')
TYPE 930,MONEY(PLYR)
930 FORMAT(' YOU HAVE $',I5,'. HOW MANY HOUSES ARE YOU BUYING FOR:')
IP=IANS
IANS=0
DO 942 K=START,FINISH
ANS=0
TSUB=K-START+1
IF(PROP(10,K).EQ.5)GO TO 937
932 TYPE 933,(ZSQRE(N,PROP(1,K)),N=1,3),PROP(10,K)
933 FORMAT(1X,3A5,'(NOW HAS ',I1,'): ',$)
IF(PLYR.NE.CMPUTR)GO TO 935
IF(K.EQ.IP)ANS=1
IF(J.NE.0)ANS=J
CALL SLP(1000)
TYPE 163,ANS
GO TO 937
935 ACCEPT 166,ANS
IF(ANS.LT.0)GO TO 939
937 TNUM(TSUB)=PROP(10,K)+ANS
IF(TNUM(TSUB).LE.5)GO TO 942
939 TYPE 940
940 FORMAT(' TOO MANY HOUSES TOTAL. TRY AGAIN')
GO TO 932
942 IANS=IANS+ANS
IF(PLYR.EQ.CMPUTR)CMONOP(5)=CMONOP(5)+IANS
IF(LEGAL(NOPROP).EQ.0)GO TO (947,944),NOPROP-1
GO TO 950
944 TYPE 945,(TNUM(N),N=1,3)
945 FORMAT(' ILLEGAL NUMBER OF HOUSES (',2(I1,','),I1,')')
GO TO 111
947 TYPE 948,(TNUM(N),N=1,2)
948 FORMAT(' ILLEGAL NUMBER OF HOUSES (',I1,',',I1,')')
GO TO 111
950 AMT=ARENT*IANS
IF(MONEY(PLYR).GE.AMT)GO TO 954
TYPE 952
952 FORMAT(' YOU DON''T HAVE ENOUGH MONEY')
GO TO 111
954 MONEY(PLYR)=MONEY(PLYR)-AMT
ASSETS(PLYR)=ASSETS(PLYR)+AMT
956 DO 957 K=START,FINISH
957 PROP(10,K)=TNUM(K-START+1)
F2=0
IF(MCHECK(PLYR,START).NE.1)F2=-CHOICE/2
MVALUE(PLYR)=MVALUE(PLYR)+F1+F2
GO TO 111
960 ARENT=(MONOP+1)/2*25
DO 962 K=START,FINISH
IF(PROP(10,K).NE.0)GO TO 966
962 CONTINUE
TYPE 964
964 FORMAT(' NO HOUSES ON THAT MONOPOLY')
GO TO 111
966 TYPE 967,ARENT
967 FORMAT(' YOU GET BACK $',I3,' PER HOUSE')
TYPE 969
969 FORMAT(' HOW MANY HOUSES ARE YOU SELLING FROM:')
IP=IANS
IANS=0
DO 980 K=START,FINISH
ANS=0
TSUB=K-START+1
IF(PROP(10,K).EQ.0)GO TO 975
971 TYPE 933,(ZSQRE(N,PROP(1,K)),N=1,3),PROP(10,K)
IF(PLYR.NE.CMPUTR)GO TO 973
IF(K.EQ.IP)ANS=1
IF(J.NE.0)ANS=J
CALL SLP(1000)
TYPE 163,ANS
GO TO 975
973 ACCEPT 166,ANS
IF(ANS.LT.0)GO TO 977
975 TNUM(TSUB)=PROP(10,K)-ANS
IF(TNUM(TSUB).GE.0)GO TO 980
977 TYPE 978
978 FORMAT(' FEWER THAN ZERO LEFT. TRY AGAIN')
GO TO 971
980 IANS=IANS+ANS
IF(PLYR.EQ.CMPUTR)CMONOP(5)=CMONOP(5)-IANS
IF(LEGAL(NOPROP).EQ.0)GO TO (947,944),NOPROP-1
AMT=ARENT*IANS
MONEY(PLYR)=MONEY(PLYR)+AMT
ASSETS(PLYR)=ASSETS(PLYR)-AMT*2
GO TO 956
CC ACTION 8 QUITTING
990 TYPE 991,RNAME(PLYR)
991 FORMAT(' YOU QUIT, ',A5,'?',$)
ACCEPT 414,ZANS
IF(ZANS.NE.'Y')GO TO 111
993 IF(PLYR.EQ.CMPUTR)CMPUTR=1
CMPUTR=CMPUTR-1
CALL TURNIN(NOJAIL(PLYR))
CALL TURNIN(NOJAIL(PLYR))
IF(PLYR.EQ.NOPLYR)GO TO 997
DO 995 K=PLYR,NOPLYR-1
LOC(K)=LOC(K+1)
MONEY(K)=MONEY(K+1)
MVALUE(K)=MVALUE(K+1)
AUTPIL(K)=AUTPIL(K+1)
ASSETS(K)=ASSETS(K+1)
RNAME(K)=RNAME(K+1)
JAIL(K)=JAIL(K+1)
NOJAIL(K)=NOJAIL(K+1)
NUMOTH(1,K)=NUMOTH(1,K+1)
NUMOTH(2,K)=NUMOTH(2,K+1)
DO 995 J=1,8
995 MOWN(K,J)=MOWN(K+1,J)
997 NOPLYR=NOPLYR-1
DO 998 K=1,22
IF(PROP(3,K).LT.PLYR)GO TO 998
IF(PROP(3,K).EQ.PLYR)PROP(3,K)=1
PROP(3,K)=PROP(3,K)-1
IF(PROP(3,K).NE.0)GO TO 998
PROP(10,K)=0
PROP(11,K)=0
998 CONTINUE
DO 999 J=1,2
DO 999 K=1,4
IF(OTHPRP(J,1,K).LT.PLYR)GO TO 999
IF(OTHPRP(J,1,K).EQ.PLYR)OTHPRP(J,1,K)=1
OTHPRP(J,1,K)=OTHPRP(J,1,K)-1
IF(OTHPRP(J,1,K).EQ.0)OTHPRP(J,2,K)=0
999 CONTINUE
DOUBLE=0
TIMER=1
PLYR=PLYR-1
IF(NOPLYR.GT.1)GO TO 100
1000 TYPE 1001,RNAME(1)
1001 FORMAT(/' YOU WIN, ',A5)
STOP
END
SUBROUTINE PASSGO(IPLYR,LCT,MONY)
LCT=LCT-40
TYPE 10
10 FORMAT(' YOU PASS GO AND COLLECT $200 ')
MONY=MONY+200
RETURN
END
SUBROUTINE TURNIN(NJL)
IMPLICIT INTEGER (C)
COMMON CARDS(2,16)
IF(NJL.EQ.1)CARDS(1,16)=1
IF(NJL.GE.10)CARDS(2,16)=1
NJL=NJL/11
RETURN
END
SUBROUTINE WHERTO(INPROP,JANS)
JANS=0
IF(INPROP.GE.23.AND.INPROP.LE.26)JANS=1
IF(INPROP.EQ.27.OR.INPROP.EQ.28)JANS=2
IF(INPROP.GE.1.AND.INPROP.LE.22)JANS=3
IF(INPROP.GE.23)INPROP=INPROP-26
IF(INPROP.LE.0)INPROP=INPROP+4
RETURN
END
FUNCTION LEGAL(NPR)
IMPLICIT INTEGER (T)
COMMON/L/TNUM(3)
LEGAL=0
T1=IABS(TNUM(1)-TNUM(2))
IF(T1.LE.1.AND.NPR.EQ.2)LEGAL=1
T2=IABS(TNUM(2)-TNUM(3))
T3=IABS(TNUM(1)-TNUM(3))
IF(T1.LE.1.AND.T2.LE.1.AND.T3.LE.1)LEGAL=1
RETURN
END
FUNCTION NCNSNT(ARG)
NCNSNT=0
TYPE 10,ARG
10 FORMAT(' DO YOU AGREE WITH THIS, ',A5,'? ',$)
IF(ARG.NE.'PDP10')GO TO 20
ANS='N'
CALL SLP(1000)
TYPE 15,ANS
15 FORMAT('+',A1)
GO TO 30
20 ACCEPT 25,ANS
25 FORMAT(A1)
30 IF(ANS.EQ.'Y')NCNSNT=1
RETURN
END
SUBROUTINE MONCOM(MONOP)
COMMON/M/MOWN(5,8),NMONOP(6),MACHIN
IF(NMONOP(1).EQ.1.OR.MOWN(MACHIN,MONOP).NE.3)RETURN
NMONOP(1)=1
NMONOP(2)=3
IF(MONOP.EQ.1.OR.MONOP.EQ.8)NMONOP(2)=2
NMONOP(3)=MONOP*3-1
IF(NMONOP(3).EQ.23)NMONOP(3)=22
NMONOP(4)=(MONOP+1)/2*50
RETURN
END
FUNCTION MCHECK(IPLYR,KPROP)
COMMON/M/MOWN(5,8)/K/IPROP(11,22)
MCHECK=1
MONOP=(KPROP+3)/3
IF(MOWN(IPLYR,MONOP).NE.3)RETURN
IST=(MONOP-1)*3
IFN=IST+2
IF(IST.EQ.0)IST=1
IF(IFN.EQ.23)IFN=22
DO 10 K=IST,IFN
IF(IPROP(10,K).NE.0)GO TO 20
10 CONTINUE
RETURN
20 MCHECK=0
RETURN
END
SUBROUTINE BUYSELL
COMMON/M/MOWN(5,8),NMONOP(6)
MONOP=(NMONOP(3)+3)/3
NMONOP(3)=NMONOP(3)+NMONOP(6)
IF((NMONOP(3)+3)/3.NE.MONOP.OR.NMONOP(3).EQ.23.OR.
1NMONOP(3).EQ.0)NMONOP(3)=NMONOP(3)-NMONOP(2)*NMONOP(6)
NMONOP(6)=0-NMONOP(6)
RETURN
END